"""
1.什么是Python包？
包就是一个文件夹，里面可以存放多个Python模块(py代码文件)，通过包，在逻辑上将一批模块归为一类，方便使用。在该文件夹下包含了一个‘__init__.py’文件，不能删有他才是包


2.如何自定义包？
- pycharm中右键新建一个包，而不是目录了哈
- 手动在仿达中新建一个文件夹，里边新建一个‘__init__.py’文件，再继续新建py模块代码时，这个就是个自定义包啦


注意：新建包后，包内部会自动创建‘__init__.py’文件，这个文件控制着包的导入行为


3.导入语法
方式一：
import 包名.模块名
包名.模块名.目标



"""

# print("================================= import 自定义的包")
# # import导入自定义的包中的模块，并使用
# import 第一阶段.my_package.my_module1
# import 第一阶段.my_package.my_module2
#
# 第一阶段.my_package.my_module1.info_print1()
# 第一阶段.my_package.my_module2.info_print2()
#
#
# print("================================= from 自定义的包")
# # from导入自定义的包中的模块，并使用
#
# from 第一阶段.my_package import my_module1
#
# from 第一阶段.my_package import my_module2
#
# my_module1.info_print1()
# my_module2.info_print2()
#
#
# print("================================= from 自定义的包中的功能")
# # from导入自定义的包中的模块，并使用
#
# from 第一阶段.my_package.my_module1 import info_print1
#
# from 第一阶段.my_package.my_module2 import info_print2
#
# info_print1()
# info_print2()


print("================================= __all__ 功能")
# 注释掉上面所有的测试方法，只留这一块再进行测试效果
from 第一阶段.my_package import *

my_module1.info_print1()
# my_module2.info_print2()  #此行报错


# 当手动导入指定具体某个模块时，就可以突破__all__的限制了
from 第一阶段.my_package import my_module2

my_module2.info_print2()
